from utils.functions import pretty_print_dict
import re
def prompt_bubble_score(content_text: str, material_list: list):
    '''
    :param content_text: 招股书文本
    :param material_list: 材料信息列表
    :return:
    '''
    Material_list = []
    for material_dict in material_list:
        Material_list.append(list(material_dict.values())[0])
    Material_list = pretty_print_dict(Material_list)

    if re.sub(" ", "", content_text) == "":
        raise ValueError("content_text为空，请输入正确的content_text")
    prompt = f"""# CONTEXT #
<content_text>与</content_text>之中的文本代表招股书的原文片段。
<material_list>与</material_list>之中的内容为相似内容列表，列表中的每个元素代表历史IPO项目中被审核人员问询过的招股说明书中的相似内容切片。
招股书的原文片段：
<content_text>
{content_text}
</content_text>；
相似内容列表：
<material_list>
{Material_list}
</material_list>。
# OBJECTIVE #
请结合 <material_list>与</material_list>之中的历史相似内容切片 和 <content_text>与</content_text>之中的原文片段，\
从IPO上市审核的角度去考虑原文片段与相似内容切片的背后逻辑的一致性。\
并且，基于原文片段与相似内容切片的背后逻辑的一致性（可以忽略原文片段与相似内容切片中的数字不一致），请给出1至10分来衡量原文片段与相似内容切片背后逻辑的一致性；1分代表最不一致，10分代表最一致。
# STYLE #
请以交易所IPO业务的审核人员的风格来给出评分。
# TONE #
正式。
# AUDIENCE #
我们的受众是投行IPO业务的内审人员和交易所IPO业务的外审人员。
# RESPONSE #
输出的内容要简短且没有标点符号！
可以忽略原文片段与相似内容切片中的数字不一致！！！
请严格遵循以上要求和下面输出示例的格式输出，只输出1至10的数字，不要输出其他内容！！！
请严格遵循以上要求和下面输出示例的格式输出，只输出1至10的数字，不要输出其他内容！！！

输出示例：
int(1-10)
"""
    prompt = prompt.strip()
    return prompt

if __name__ == '__main__':

    material_list = [
  {
    "72170": "（3）2021年 7月发行人客户惠州狮子城文化有限公司因与交通银行借款合同纠纷被查封、冻结较大金额的资产，出现信用风险，但由于客户 2021 年仍有回款，发行人对其尚未回款的余额 642.27万元单项计提 50%。"
  },
  {
    "81200": "（2）报告期内公司按单项计提的应收账款坏账准备分别为 131.94 万元、931.34 万元、1,520.18 万元，相应坏账准备计提比例分别为 100%、55.21%、44.79%。"
  },
  {
    "81101": "（2）报告期内公司按单项计提的应收账款坏账准备分别为 131.94 万元、931.34 万元、1,520.18 万元，相应坏账准备计提比例分别为 100%、55.21%、44.79%。1-248"
  }
]
    print(prompt_bubble_score('content_text', material_list))


